/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.aspera.vista;

import co.edu.senaclem.logica.AsignaFichasLogicaLocal;
import co.edu.senaclem.logica.FichaLogicaLocal;
import co.edu.senaclem.logica.InstructorLogicaLocal;
import co.edu.senaclem.logica.ProgramaLogicaLocal;
import co.edu.senaclem.logica.UsuariosLogicaLocal;
import co.edu.senaclem.modelo.AsignaFichas;
import co.edu.senaclem.modelo.FichaTitulacion;
import co.edu.senaclem.modelo.Instructor;
import co.edu.senaclem.modelo.Programa;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.selectonemenu.SelectOneMenu;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author DILOVE
 */
@ManagedBean(name="fichasVista")
@RequestScoped
public class FichaVista {
    @EJB
    private FichaLogicaLocal fichaLogica;
    
    @EJB
    private AsignaFichasLogicaLocal asignaFichasLogica;
    
    @EJB
    private ProgramaLogicaLocal programaLogica;
    
    @EJB
    private InstructorLogicaLocal instructorLogica;
    
    @EJB
    private UsuariosLogicaLocal usuariosLogica;

    private InputText txtFicha;
    private SelectOneMenu txtJornada;
    private InputText txtCodigoPrograma;
    private InputText txtPrograma;
    private CommandButton btnRegistrar;
    private CommandButton btnModificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;
    private FichaTitulacion selectedFicha;
    private CommandButton btnRegistrarFichas;
    private CommandButton btnRetirarFichas;
    private FichaTitulacion[] selectedFichas;  
    private FichaTitulacion[] selectedFichasA;
    private List<FichaTitulacion> listaFichas=null;
    private List<FichaTitulacion> listaFichasA=null;
    private List<FichaTitulacion> listaFichasD=null;
    private FichaTitulacion fichaSelected;
    private SelectOneMenu cmbTipoInstructor;
    private InputText txtIdentificacion;
    private InputText txtNombre;

   
    /**
     * @return the btnRegistrar
     */
    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    /**
     * @param btnRegistrar the btnRegistrar to set
     */
    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    /**
     * @return the btnModificar
     */
    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    /**
     * @param btnModificar the btnModificar to set
     */
    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    /**
     * @return the btnEliminar
     */
    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    /**
     * @param btnEliminar the btnEliminar to set
     */
    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    /**
     * @return the btnLimpiar
     */
    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    /**
     * @param btnLimpiar the btnLimpiar to set
     */
    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

      
    public void registrar_action(){
        //System.out.println("Registrar Ficha");
        if(usuariosLogica.validarSesion())
        {
            try {
                FichaTitulacion ficha=new FichaTitulacion();
                Integer nroFicha = Integer.parseInt(txtFicha.getValue().toString());
                ficha.setFicha(nroFicha);
                ficha.setJornada(getTxtJornada().getValue().toString());
                Integer codPrograma = Integer.parseInt(txtCodigoPrograma.getValue().toString());
                Programa programa = programaLogica.consultarPorId(codPrograma);
                if(programa==null)
                {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Error: ","El Programa No Existe!"));
                }
                ficha.setCodigoPrograma(programa);
                fichaLogica.registrar(ficha);
                
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Mensaje: ","La Ficha se Creó con Exito"));
            } catch (Exception e) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
            }        
            listaFichas=null;
            limpiar_action();
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }        
    }
    
    public void registrar_fichas_action()
    {
        //System.out.println("Asignar Fichas Instructor!!!!!!!!! SIIIII");
        if(usuariosLogica.validarSesion())
        {
            try {            
                Long documentoInstructor = Long.parseLong(txtIdentificacion.getValue().toString());
                Instructor ins = getInstructorLogica().consultarPorId(documentoInstructor);
                //System.out.println("El instructor es "+ins.getDocumento().getNombre());
                //System.out.println("Las fichas son "+selectedFichas.length);
                AsignaFichas entityAsigna;
                for(int i=0; i<selectedFichas.length; i++)
                {
                    //System.out.println("Entro aqui?");
                    entityAsigna=new AsignaFichas();
                    entityAsigna.setInstructor(ins);
                    entityAsigna.setFicha(selectedFichas[i]);
                    fichaLogica.asignarFichas(entityAsigna);
                }            
                //System.out.println("Modifico el instructor asignando fichas");
                listaFichasD=null;
                listaFichasA=null;
                selectedFichas=null;
            }catch (NumberFormatException nfe) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", "El Documento Debe Ser Numérico!"));
            }  
            catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }        
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void retirar_fichas_action()
    {
        if(usuariosLogica.validarSesion()){
        try {            
                Long documentoInstructor = Long.parseLong(txtIdentificacion.getValue().toString());
                Instructor ins = getInstructorLogica().consultarPorId(documentoInstructor);
                //System.out.println("El instructor es "+ins.getDocumento().getNombre());
                //System.out.println("Las fichas son "+selectedFichasA.length);
                AsignaFichas entityAsignaR;
                int cod;
                for(int i=0; i<selectedFichasA.length; i++)
                {
                    //System.out.println("Entro aqui?");
                    cod = asignaFichasLogica.consultarCodigoAsigna(ins.getDocumento().getDocumento(), selectedFichasA[i].getFicha());
                    entityAsignaR=asignaFichasLogica.consultarPorId(cod);
                    fichaLogica.retirarFichas(entityAsignaR);
                }            
                //System.out.println("Retiro las fichas del instructor asignando fichas");
                listaFichasD=null;
                listaFichasA=null;
                selectedFichasA=null;
            }catch (NumberFormatException nfe) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", "El Documento Debe Ser Numérico!"));
            }  
            catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }        
     }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void modificar_action(){
       //System.out.println("Modificar Ficha");
       if(usuariosLogica.validarSesion())
       {
        try {            
             FichaTitulacion ficha=new FichaTitulacion();
             Integer nroFicha = Integer.parseInt(txtFicha.getValue().toString());
             FichaTitulacion entityFicha = fichaLogica.consultarPorId(nroFicha);
             if(entityFicha==null)
             {
                 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", "La Ficha a Modificar No se Encuentra Registrada!"));
             }
             else
             {
                 ficha.setFicha(nroFicha);
                 ficha.setJornada(txtJornada.getValue().toString().toUpperCase());
                 Integer codPrograma = Integer.parseInt(txtCodigoPrograma.getValue().toString());
                 Programa programa = programaLogica.consultarPorId(codPrograma);
                 //System.out.println("Programa a modificar de la ficha "+programa.getNombre());
                 if(programa==null)
                 {
                     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Aviso: ", "El Programa de Formación Asociado No Existe!"));
                 }else{
                 ficha.setCodigoPrograma(programa);
                 fichaLogica.modificar(ficha);
                 
                 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Mensaje: ","La Ficha se Modificó con Exito"));
                 }
             }
         } catch (Exception e) {
             FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
         }
         listaFichas=null;
         limpiar_action();
       }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void borrar_action(){
        //System.out.println("Borrar Ficha");
        if(usuariosLogica.validarSesion())
        {
            try {
               Integer nroFicha = Integer.parseInt(txtFicha.getValue().toString());
               FichaTitulacion entityFicha = fichaLogica.consultarPorId(nroFicha);
               //System.out.println("Ficha a borrar "+entityFicha.getFicha());
               if(entityFicha!=null)
               {
                   fichaLogica.eliminar(entityFicha);
                   FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Mensaje: ","La Ficha se Eliminó con Exito"));
               }            
           } catch (Exception e) {
               FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
           }
           listaFichas=null;
           limpiar_action();
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void limpiar_action(){
        //System.out.println("Limpiar");
        if(usuariosLogica.validarSesion())
        {
            txtFicha.setValue("");
            txtJornada.setValue("ninguno");
            txtPrograma.setValue("");
            txtCodigoPrograma.setValue("");
            btnRegistrar.setDisabled(false);
            btnEliminar.setDisabled(true);
            btnModificar.setDisabled(true);
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

      
    public void txtFicha_listener()
    {       
        //System.out.println("Entro al listener para buscar la ficha");
        if(usuariosLogica.validarSesion())
        {
            FichaTitulacion ficha = null;
            try {    
                Integer numFicha = Integer.parseInt(txtFicha.getValue().toString());
                ficha = fichaLogica.consultarPorId(numFicha);
            } catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }
            if(ficha==null)
            {
                txtJornada.setValue("ninguno");
                txtPrograma.setValue("");
                txtCodigoPrograma.setValue("");            
                btnRegistrar.setDisabled(false);
                btnEliminar.setDisabled(true);
                btnModificar.setDisabled(true);
            }
            else
            {
                txtCodigoPrograma.setValue(ficha.getCodigoPrograma().getCodigo());
                txtPrograma.setValue(ficha.getCodigoPrograma().getNombre());
                txtJornada.setValue(ficha.getJornada());            
                btnRegistrar.setDisabled(true);
                btnEliminar.setDisabled(false);
                btnModificar.setDisabled(false);
            }  
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void txtIdentificacion_listener_fichas()
    {       
        //System.out.println("Entro al listener de instructor fichas");
        if(usuariosLogica.validarSesion())
        {
            try {
                Instructor ins;       
                Long documentoInstructor=Long.parseLong(txtIdentificacion.getValue().toString());            
                ins = instructorLogica.consultarPorId(documentoInstructor);
                if(ins==null)
                {
                    //System.out.println("NO encontro el INSTRUCTOR ");
                    txtNombre.setValue("");
                    cmbTipoInstructor.setValue("ninguno");
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Aviso: ", "El Instructor No Está Registrado!"));
                    listaFichasA=null;
                    listaFichasD=null;
                }
                else
                {
                    //System.out.println("Se encontro el INSTRUCTOR "+ins.getDocumento().getNombre());
                    txtIdentificacion.setValue(ins.getDocumento().getDocumento());
                    txtNombre.setValue(ins.getDocumento().getNombre());
                    cmbTipoInstructor.setValue(ins.getTipo());
                    listaFichasA=null;
                    listaFichasD=null;
                }
            }catch (NumberFormatException nfe) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", "El Documento Debe Ser Numérico!"));
            } 
            catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void txtPrograma_listener()
    {       
        //System.out.println("Entro al listener para buscar el programa");
        if(usuariosLogica.validarSesion())
        {
            Programa programa = null;
            try {    
                Integer codPrograma = Integer.parseInt(txtCodigoPrograma.getValue().toString());
                //System.out.println("Codigo programa "+codPrograma);
                programa = programaLogica.consultarPorId(codPrograma);
            } catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }
            if(programa==null)
            {
                txtPrograma.setValue("");
                txtCodigoPrograma.setValue("");            
                btnRegistrar.setDisabled(false);
                btnEliminar.setDisabled(true);
                btnModificar.setDisabled(true);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Aviso: ", "El Programa No Está Registrado!"));
            }
            else
            {
                txtCodigoPrograma.setValue(programa.getCodigo());
                txtPrograma.setValue(programa.getNombre());           
                btnRegistrar.setDisabled(false);
                btnEliminar.setDisabled(false);
                btnModificar.setDisabled(false);
            } 
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
    }
     

    /**
     * @return the fichaLogica
     */
    public FichaLogicaLocal getFichaLogica() {
        return fichaLogica;
    }

    /**
     * @param fichaLogica the fichaLogica to set
     */
    public void setFichaLogica(FichaLogicaLocal fichaLogica) {
        this.fichaLogica = fichaLogica;
    }

    /**
     * @return the txtFicha
     */
    public InputText getTxtFicha() {
        return txtFicha;
    }

    /**
     * @param txtFicha the txtFicha to set
     */
    public void setTxtFicha(InputText txtFicha) {
        this.txtFicha = txtFicha;
    }

    /**
     * @return the selectedFicha
     */
    public FichaTitulacion getSelectedFicha() {
        return selectedFicha;
    }

    /**
     * @param selectedFicha the selectedFicha to set
     */
    public void setSelectedFicha(FichaTitulacion selectedFicha) {
        this.selectedFicha = selectedFicha;
    }

    /**
     * @return the listaFichas
     */
    public List<FichaTitulacion> getListaFichas() {
         if(listaFichas==null){
            try {
                //System.out.println("Va a consultar las Fichas");
                listaFichas=fichaLogica.consultar();
                //System.out.println("Tamaño de las fichas "+listaFichas.size());
            } catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }
        }
        return listaFichas;
    }

   
    /**
     * @return the txtPrograma
     */
    public InputText getTxtPrograma() {
        return txtPrograma;
    }

    /**
     * @param txtPrograma the txtPrograma to set
     */
    public void setTxtPrograma(InputText txtPrograma) {
        this.txtPrograma = txtPrograma;
    }

    /**
     * @return the fichaSelected
     */
    public FichaTitulacion getFichaSelected() {
        return fichaSelected;
    }

    /**
     * @param fichaSelected the fichaSelected to set
     */
    public void setFichaSelected(FichaTitulacion fichaSelected) {
        this.fichaSelected = fichaSelected;
    }
    
    public void onRowSelect(SelectEvent event) {  
        //System.out.println("Seleccion una ficha!!!");
        if(usuariosLogica.validarSesion())
        {
            FichaTitulacion fichaS = (FichaTitulacion) event.getObject();
            //System.out.println("Ficha seleccionada "+fichaS.getFicha());
            txtJornada.setValue(fichaS.getJornada());
            txtFicha.setValue(fichaS.getFicha());  
            txtCodigoPrograma.setValue(fichaS.getCodigoPrograma().getCodigo());
            txtPrograma.setValue(fichaS.getCodigoPrograma().getNombre());
            btnRegistrar.setDisabled(true);
            btnEliminar.setDisabled(false);
            btnModificar.setDisabled(false);
            btnLimpiar.setDisabled(false);
        }else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * @return the programaLogica
     */
    public ProgramaLogicaLocal getProgramaLogica() {
        return programaLogica;
    }

    /**
     * @param programaLogica the programaLogica to set
     */
    public void setProgramaLogica(ProgramaLogicaLocal programaLogica) {
        this.programaLogica = programaLogica;
    }

    /**
     * @return the txtJornada
     */
    public SelectOneMenu getTxtJornada() {
        return txtJornada;
    }

    /**
     * @param txtJornada the txtJornada to set
     */
    public void setTxtJornada(SelectOneMenu txtJornada) {
        this.txtJornada = txtJornada;
    }

    /**
     * @return the txtCodigoPrograma
     */
    public InputText getTxtCodigoPrograma() {
        return txtCodigoPrograma;
    }

    /**
     * @param txtCodigoPrograma the txtCodigoPrograma to set
     */
    public void setTxtCodigoPrograma(InputText txtCodigoPrograma) {
        this.txtCodigoPrograma = txtCodigoPrograma;
    }

    /**
     * @return the selectedFichas
     */
    public FichaTitulacion[] getSelectedFichas() {
        return selectedFichas;
    }

    /**
     * @return the btnRegistrarFichas
     */
    public CommandButton getBtnRegistrarFichas() {
        return btnRegistrarFichas;
    }

    /**
     * @param btnRegistrarFichas the btnRegistrarFichas to set
     */
    public void setBtnRegistrarFichas(CommandButton btnRegistrarFichas) {
        this.btnRegistrarFichas = btnRegistrarFichas;
    }

    /**
     * @return the cmbTipoInstructor
     */
    public SelectOneMenu getCmbTipoInstructor() {
        return cmbTipoInstructor;
    }

    /**
     * @param cmbTipoInstructor the cmbTipoInstructor to set
     */
    public void setCmbTipoInstructor(SelectOneMenu cmbTipoInstructor) {
        this.cmbTipoInstructor = cmbTipoInstructor;
    }

    /**
     * @return the txtIdentificacion
     */
    public InputText getTxtIdentificacion() {
        return txtIdentificacion;
    }

    /**
     * @param txtIdentificacion the txtIdentificacion to set
     */
    public void setTxtIdentificacion(InputText txtIdentificacion) {
        this.txtIdentificacion = txtIdentificacion;
    }

    /**
     * @return the txtNombre
     */
    public InputText getTxtNombre() {
        return txtNombre;
    }

    /**
     * @param txtNombre the txtNombre to set
     */
    public void setTxtNombre(InputText txtNombre) {
        this.txtNombre = txtNombre;
    }

    /**
     * @return the listaFichasA
     */
    public List<FichaTitulacion> getListaFichasA() {
        //System.out.println("Va a consultar las Fichas Asignadas en Vista");
         if(listaFichasA==null){
            try {
                if(txtIdentificacion.getValue()==null || txtIdentificacion.getValue().toString().equals(""))
                {
                    //System.out.println("No hay instructor aun");
                    listaFichasA=null;
                }
                else
                {
                    //System.out.println("Va a consultar las Fichas AAAAA");
                    Long documentoInstructor=Long.parseLong(txtIdentificacion.getValue().toString());  
                    Instructor ins = instructorLogica.consultarPorId(documentoInstructor);
                    if(ins==null)
                    {
                        listaFichasA=null;
                    }
                    else
                    {
                        //System.out.println("instructor de asignadas "+ins.getDocumento().getNombre());
                        listaFichasA=fichaLogica.consultarAsignadas(ins);
                        //System.out.println("Tamaño de las fichas Asignadas"+getListaFichasA().size());
                    }
                }
            }catch (NumberFormatException nfe) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", "El Documento Debe Ser Numérico!"));
            }  
            catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }
        }
        return listaFichasA;
    }

    /**
     * @return the btnRetirarFichas
     */
    public CommandButton getBtnRetirarFichas() {
        return btnRetirarFichas;
    }

    /**
     * @param btnRetirarFichas the btnRetirarFichas to set
     */
    public void setBtnRetirarFichas(CommandButton btnRetirarFichas) {
        this.btnRetirarFichas = btnRetirarFichas;
    }

    /**
     * @return the selectedFichasA
     */
    public FichaTitulacion[] getSelectedFichasA() {
        return selectedFichasA;
    }

    /**
     * @param selectedFichas the selectedFichas to set
     */
    public void setSelectedFichas(FichaTitulacion[] selectedFichas) {
        this.selectedFichas = selectedFichas;
    }

    /**
     * @param selectedFichasA the selectedFichasA to set
     */
    public void setSelectedFichasA(FichaTitulacion[] selectedFichasA) {
        this.selectedFichasA=selectedFichasA;
    }

    /**
     * @param listaFichasA the listaFichasA to set
     */
    public void setListaFichasA(List<FichaTitulacion> listaFichasA) {
        this.listaFichasA=listaFichasA;
    }

    /**
     * @param listaFichas the listaFichas to set
     */
    public void setListaFichas(List<FichaTitulacion> listaFichas) {
        this.setListaFichas(listaFichas);
    }

    /**
     * @return the asignaFichasLogica
     */
    public AsignaFichasLogicaLocal getAsignaFichasLogica() {
        return asignaFichasLogica;
    }

    /**
     * @param asignaFichasLogica the asignaFichasLogica to set
     */
    public void setAsignaFichasLogica(AsignaFichasLogicaLocal asignaFichasLogica) {
        this.asignaFichasLogica = asignaFichasLogica;
    }

    /**
     * @return the instructorLogica
     */
    public InstructorLogicaLocal getInstructorLogica() {
        return instructorLogica;
    }

    /**
     * @param instructorLogica the instructorLogica to set
     */
    public void setInstructorLogica(InstructorLogicaLocal instructorLogica) {
        this.instructorLogica = instructorLogica;
    }
        
   
    /**
     * @return the listaFichasD
     */
    public List<FichaTitulacion> getListaFichasD() {
        if(listaFichasD==null){
            try {
               // System.out.println("Va a consultar las Fichas DisponiblesDD en Vista");
                if(txtIdentificacion.getValue()==null || txtIdentificacion.getValue().toString().equals(""))
                {
                    //System.out.println("No hay instructor aun");
                    listaFichasD=null;
                }
                else
                {
                    Long documentoInstructor=Long.parseLong(txtIdentificacion.getValue().toString()); 
                    //System.out.println("EL instructor "+documentoInstructor);
                    Instructor ins = instructorLogica.consultarPorId(documentoInstructor);
                    if(ins==null)
                    {
                        listaFichasD=null;
                    }
                    else
                    {
                        listaFichasD = fichaLogica.consultarDisponibles(ins);
                        //System.out.println("Tamaño de las fichas "+listaFichasD.size());
                    }
                }
            }catch (NumberFormatException nfe) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", "El Documento Debe Ser Numérico!"));
            }  
            catch (Exception ex) {
                Logger.getLogger(FichaVista.class.getName()).log(Level.SEVERE, null, ex);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", ex.getMessage()));
            }
        }
        return listaFichasD;
    }

    /**
     * @param listaFichasD the listaFichasD to set
     */
    public void setListaFichasD(List<FichaTitulacion> listaFichasD) {
        this.listaFichasD = listaFichasD;
    }
    
    public void onEliminacionConfirm(ActionEvent actionEvent) {
        borrar_action();
    }
}
